package com.test.suanfa;

/**
 * 素数统计
 * 给定一个范围，判断有多少个素数，比如输入100，判断1-100之间的素数有多少个，0，1除外
 */
public class 素数统计 {

    public static void main(String[] args) {
        int input = 100;
        new 素数统计().test(input);
        new 素数统计().test4(input);
    }

    public void test4(int input){
        int count = 0;
        for (int i=2;i<input;i++){
            if(c4(i)){
                count = count+1;
            }
        }
        System.out.println(count);
    }

    public boolean c4(int n){
        for (int i=2;i<n;i++){
            if (n % i ==0){
                return false;
            }
        }
        return true;
    }

    public void test3(int input) {
        int count = 0;
        for (int i = 2; i < input; i++) {
            if (c3(i)) {
                count = count + 1;
            }
        }
        System.out.println(count);
    }

    public boolean c3(int n) {
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }


    public void test(int input) {
        int count = 0;
        // 确定迭代范围
        for (int i = 2; i < input; i++) {
            if (test1(i)) {
                count = count + 1;
            }
        }
        System.out.println(count);
    }

    public boolean test1(int n) {
        // 这里迭代到 n 之前，主要是因为n/n必然=0，还有就是  b > a ，a一定不能被b整除
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
